import java.io.*;
import java.net.*;

public class ClienteUDP {
    public static void main(String[] args) throws IOException {
    	ModeloDatos c1 = new ModeloDatos ();
        c1.setOperacion(123);
        c1.setDatos("test");

        try {
          //creamos ByteArrayOutputStream
        	ByteArrayOutputStream baos = new ByteArrayOutputStream();
         //creamos ObjectOutputStream pasandole como parametro el objeto ByteArrayOutputStream creado anteriormente
        	ObjectOutputStream oos = new ObjectOutputStream(baos);
          // al ObjectOutputStream le pasamos nuestro objeto que implementa la interfaz serializable
        	oos.writeObject(c1);
          // vaciamos el buffer por si las moscas...
        	oos.flush();
          // ahora obtenemos nuestro objeto c1 como un array de bytes
          byte[] Buf= baos.toByteArray();

          int number = Buf.length;;
          byte[] data = new byte[4];

          //Codificamos la longitud del 
          // int -> byte[]
          for (int i = 0; i < 4; ++i) {
              int shift = i << 3; // i * 8
              data[3-i] = (byte)((number & (0xff << shift)) >>> shift);
          }

          DatagramSocket socket = new DatagramSocket(1233);
          InetAddress client = InetAddress.getByName("localhost");
          DatagramPacket packet = new DatagramPacket(data, 4, client, 1234);
          socket.send(packet);

          // now send the payload
          packet = new DatagramPacket(Buf, Buf.length, client, 1234);
          socket.send(packet);

          System.out.println("DONE SENDING");
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}
